<?php
namespace app\common;
use app\common\service\EncryptService;

trait RootResult
{
    /**
     * 成功返回
     * @param array $data
     * @param string $msg
     * @return \think\response\Json
     */
    protected function success(array $data, string $msg = 'success')
    {
        $returnData = ['code' => 0, 'msg' => $msg, 'data' => $data];
        // 分页数据列表
        isset($data['data']) && $returnData['data'] = $data['data'];
        // 分页数据总数
        isset($data['total']) && $returnData['count'] = $data['total'];
        // msg置换
        empty($data['msg']) || $returnData['msg'] = $data['msg'];
        // code置换
        empty($data['code']) || $returnData['code'] = $data['code'];
        // 刷新页面
        isset($data['reload']) && $returnData['reload'] = $data['reload'];
        // 刷新父级页面
        empty($data['preload']) || $returnData['preload'] = $data['preload'];
        // 重定向到指定页面
        empty($data['redirect']) || $returnData['redirect'] = $data['redirect'];
        // 页面重载时长2秒
        empty($data['reload']) || empty($data['preload']) || $returnData['time'] = 2000;
        // 删除冗余字段
        unset($returnData['data']['msg'], $returnData['data']['code'], $returnData['data']['reload'],
            $returnData['data']['preload'], $returnData['data']['redirect']);
        // 返回
        return json($returnData);
    }

    /**
     * 错误提示
     * @param string $errorMsg
     * @param bool $json
     * @return \think\response\Json
     * @throws RootException
     */
    protected function error(string $errorMsg, bool $json = false)
    {
        if ($json) {
            // JSON形式返回
            return json(['code' => 1, 'msg' => $errorMsg]);
        }
        // 异常形式抛出
        throw new RootException($errorMsg);
    }
}